package com.woniuxy.course.service;

import com.woniuxy.commons.dto.CourseDto;
import com.woniuxy.commons.entity.Course;
import com.woniuxy.commons.entity.PageBean;
import com.woniuxy.commons.entity.Teacher;

import java.util.List;

/**
 * @Author LuoChen
 * @DateTime 2020-07-18 15:34:49
 * @Description
 */
public interface CourseService {
    /**
     * 查询所有的课程信息
     *
     * @return: java.util.List<com.woniuxy.commons.dto.CourseDto>
     * @author: LuoChen
     * @dateTime: 2020-07-18 15:35:06
     */
    List<CourseDto> findAllCourses();

    /**
     * 根据课程id查询课程信息
     *
     * @param cid
     * @return: com.woniuxy.commons.entity.Course
     * @author: LuoChen
     * @dateTime: 2020-07-18 15:22:33
     */
    Course findCourseByCid(int cid);

    /**
     * 根据条件查找课程
     *
     * @param condition
     * @return: java.util.List<com.woniuxy.commons.entity.Course>
     * @author: LuoChen
     * @dateTime: 2020-07-18 15:22:33
     */
    PageBean<CourseDto> findCoursesByCondition(CourseDto condition);

    /**
     * 修改课程信息
     *
     * @param updatedInfo
     * @return: int
     * @author: LuoChen
     * @dateTime: 2020-07-18 15:22:33
     */
    int updateCourseInfo(Course updatedInfo);

    /**
     * 新增一门课程
     *
     * @param course
     * @return: int
     * @author: LuoChen
     * @dateTime: 2020-07-18 15:22:33
     */
    int addCourse(Course course);

    /**
     * 查询所有教师
     * @return: java.util.List<com.woniuxy.commons.entity.Teacher>
     * @author: LuoChen
     * @dateTime: 2020-08-03 15:30:09
     */
    List<Teacher> findAllTeachers();

    /**
     * 根据id下架该课程，逻辑删除，本质是修改课程状态
     *
     * @param cid
     * @return: int
     * @author: LuoChen
     * @dateTime: 2020-07-18 15:22:33
     */
    int courseOff(int cid);

    /**
     * 根据id上架该课程，本质是修改课程状态
     *
     * @param cid
     * @return: int
     * @author: LuoChen
     * @dateTime: 2020-07-18 15:22:33
     */
    int courseOn(int cid);

    /**
     * 根据id将该课程放入草稿箱，暂不发布，本质是修改课程状态
     *
     * @param cid
     * @return: int
     * @author: LuoChen
     * @dateTime: 2020-07-18 15:22:33
     */
    int putCourseIntoDraftsBox(int cid);

    /**
     * 根据id删除一个课程
     *
     * @param cid
     * @return: int
     * @author: LuoChen
     * @dateTime: 2020-07-18 15:22:33
     */
    int deleteCourseByCid(int cid);
}
